package create.singletonPattern.Demo01;

/**
 * @ClassName Singleton
 * @Description 懒汉式：在类加载的时候就创建对象
 * @Author 李明忠
 * @Date 2025/5/8 16:13
 * @Version 1.0
 */
public class Singleton {
    /**
     *为什么必须这样设计？
     *  单例模式的核心要求是：全局只有一个实例，并提供统一的访问点。
     *  如果 singleton 不是 private，外部代码可以绕过控制直接修改它；
     *  如果 singleton 不是 static，则每个实例都会有自己的 singleton 变量，违背单例的唯一性。
     *  全局只有一个实例==》singleton为static修饰
     */

    //1.构造私有化:让你在外部无法创建对象
    private Singleton(){

    }
    //2.对象只有一份供大家共享
    private static Singleton instance = new Singleton();

    //3.提供一个公有方法给外部使用
    //这个方法为静态，否则只能通过实例来访问，那么就打破了单例的要求
    public static Singleton getSingleton() {
        return instance;
    }
}
